var M=require("ming_node");
var app=M.server();
app.listen(8889);


//默认token
const g_token="abcdefg"
//启用认证
const g_enable_auth=false;

//用户表
const g_user_db="user.json"
//openPath列表
openPathList=["/login","/register"]

/**
 * 过滤器
 */
app.begin((req,res)=>{
    console.log("app.begin 8889",req.url,req.body)
    if(!g_enable_auth){
        return false;
    }
    let isOpenPath=false;
    if(req.headers["authorization"]==g_token){
        isOpenPath=true;
    }else{
       
        for(let i=0;i<openPathList.length;i++){
            if(req.url.startsWith(openPathList[i])){
                isOpenPath=true;
                break;
            }
        }
    }
    if(!isOpenPath){
        //携带cookie有对应session
        if(req.session &&  req.session.username){
      
        }else{
            res.alreadySend = true;
            app.redirect("/login.html",req,res)
            return;
        }
    }
 })
  /**
   * 注册
   */
 app.post("/register",function (req,res) {
     let r= JSON.parse(req.body);
     r1=M.listAllObjByPropFile(g_user_db,{"username":r.username})
    if(r1.length>0){
        res.send(M.result(r.username+"已被注册",false));
        return;
    }
     r.id = M.randomStr();
     M.addObjToFile(g_user_db,r)
     res.send(M.result(r));
  });

  /**
   * 退出
   */
  app.get("/signOut",function (req,res) {
      req.session={}
      app.redirect("/login.html",req,res)
      return;
 });
/**
 * 登陆
 */
 app.post("/login",function (req,res) {
    let r= JSON.parse(req.body);
     r1=M.listAllObjByPropFile(g_user_db,{"username":r.username})
    if(r1.length>0){
        if(r1[0].password!=r.password){
            res.send(M.result("账号或密码错误",false));
             return;
        }
    }else{
        res.send(M.result("账号或密码错误",false));
        return;
    }
    req.session={username:r.username}
    res.send(M.result("ok"));
 });

/**
 * 测试查session
 */
 app.get("/logingetSession",(req,res)=>{
    //打印session
    console.log(req.session,M.sessions)
    res.send(M.result(req.session));
})

/**
 * 接口分页类别
 */
 app.get("/miApiListByPage",function (req,res) {
    console.log(req.params.startPage,req.params.limit)
    r= M.listByPage(req.params.startPage,req.params.limit)
    res.send(M.result(r));
 });

 /**
 * 接口详情
 */
 app.get("/miApiGetById",function (req,res) {
    console.log(req.params)
    r= M.getById(req.params.id)
    res.send(M.result(r));
 });
 
  /**
 * 接口新增
 */
 app.post("/miApiAdd",async function (req,res) {
     M.add(JSON.parse(req.body))
     res.send(M.result("ok"))
 });
 
  /**
 * 接口修改
 */
 app.post("/miApiUpdate",function (req,res) {
     M.update(JSON.parse(req.body))
     res.send(M.result("ok"))
 });
 
  /**
 * 接口删除
 */
 app.get("/miApiDelete",async function (req,res) {
     M.deleteById(req.params.id);
     res.send(M.result("ok"))
 });